/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package trunk.view;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.util.ArrayList;
import javax.swing.JFrame;
import javax.swing.JPanel;
import trunk.controller.PaintController;
import trunk.model.Dessin;

import trunk.observer.Observer;
import trunk.view.ColorChooser.ColorChooser;


/**
 * Class Paint
 * 
 * Components representant la fenetre principal de l'application
 * 
 * @author LEFEVRE Michael
 * @author THOUE Jonathan
 */
public class Paint extends JFrame implements Observer{

    private JPanel mainPanel;
    private DrawTabbed tabbed;
    private MenuPrincipal menuprincipal;
    private Dessin dessinCourrant;
    private PaintController controler;
    private ColorChooser ajoutCouleur;
    /**
     * Constructeur de la classe
     * @param controler - Controlleur principal de l'application
     */
    public Paint(PaintController controler) {        
        setSize(1000, 1000); 
        setTitle("Paint");
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setResizable(false);
        initModel();
        this.controler=controler;
        initComponents();
        this.setVisible(true);
    }    
    /**
     * Méthodes d'initialisation des composants graphiques
     */
    private void initComponents() {
       menuprincipal = new MenuPrincipal(this,controler.getModel());

       setJMenuBar(menuprincipal);        
       mainPanel = new JPanel(new BorderLayout());

       add(mainPanel);
       JPanel panelTabbed = new JPanel();
       panelTabbed.setBackground(new Color(143, 158, 255));
       panelTabbed.setPreferredSize(new Dimension(1000, 1000));
       tabbed=new DrawTabbed(controler.getModel());
       panelTabbed.add(tabbed);
       mainPanel.add(panelTabbed,BorderLayout.WEST);
       ajoutCouleur= new ColorChooser(controler.getModel(),this);
       ajoutCouleur.setVisible(false);
    }
    /**
     * Méthodes d'initialisation des attributs
     */
    private void initModel() {
        dessinCourrant = new Dessin(); 
    }
    /**
     * Get dessin
     * @return le dessin courrant
     */
    public Dessin getDessin() {
        return dessinCourrant;
    }
    /**
     * Set dessin
     * @param dessin - le dessin courrant
     */
    public void setDessin(Dessin dessin) {
        this.dessinCourrant = dessin;
    } 
    /**
     * get tabbed - gestionnaire d'onglets
     * @return gestionnaire d'onglets
     */
    public DrawTabbed getTabbed() { return tabbed;    }
    /**
     * set tabbed - gestionnaire d'onglets
     * @param tabbed - gestionnaire d'onglets
     */
    public void setTabbed(DrawTabbed tabbed) {   this.tabbed = tabbed;    }

    /**
     * get AjoutCouleur
     * @return la frame d'ajout de conleur
     */
    public ColorChooser getAjoutCouleur() {
        return ajoutCouleur;
    }
    /**
     * Méthode de mise à jour de la vue
     */
    @Override
    public void update(Dessin dessin) {
        dessinCourrant=dessin;
    }
}
